STS中临时授权访问OSS资源时出现“You are not authorized to do this action. You should be authorized by RAM“报错 | 您所在的位置:网站首页 › hoekijzers action › STS中临时授权访问OSS资源时出现“You are not authorized to do this action. You should be authorized by RAM“报错 |
问题描述 通过STS服务给其他用户颁发一个临时访问凭证,希望该用户可使用临时访问凭证在规定时间内访问您的OSS资源。在使用代码实现授权时出现以下报错: Code: NoPermission Error message: You are not authorized to do this action. You should be authorized by RAM.问题原因STS中临时授权访问OSS资源时出现报错的原因如下: 原因一:代码中使用了阿里云账号的AccessKey ID和AccessKeySecret,而非RAM用户的。 原因二:没有为RAM用户添加AliyunSTSAssumeRoleAccess权限策略。 原因三:代码中使用的RoleARN参数对应的角色不是用户角色,而是服务角色。 解决方案重要如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。 原因一的解决方法 在代码中使用RAM用户的AccessKey和AccessKeySecret。关于RAM用户如何创建AccessKey,请参见创建AccessKey。 原因二的解决方法 请为该RAM用户添加系统策略(AliyunSTSAssumeRoleAccess)或自定义策略,具体操作如下: 方法一:添加系统策略 为RAM用户添加AliyunSTSAssumeRoleAccess策略。具体操作,请参见使用STS临时访问凭证访问OSS。 登录RAM控制台,选择人员管理>用户,然后单击指定RAM用户名。在权限管理页签,确认该RAM用户已被授予AliyunSTSAssumeRoleAccess系统策略。 方法二:添加自定义策略 登录RAM控制台。 在左侧导航栏,选择身份管理>角色,单击目标RAM角色名称。 在基本信息区域,查看RAM角色ARN。 通过创建自定义策略指定RAM用户具体可以扮演的RAM角色。策略示例如下: { "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Resource": "acs:ram:*:[$Account_ID]:role/[$Role_Name]" } ], "Version": "1" }说明Resource为角色ARN。 [$Account_ID]为阿里云账号ID。 [$Role_Name]为RAM角色名称。
将自定义策略授权给RAM用户后,即可指定具体可以扮演的RAM角色。关于如何为RAM用户授权,请参见为RAM用户授权。 原因三的解决方法 请确保创建RAM角色时选择的类型为阿里云账号。关于如何创建RAM角色,请参见创建可信实体为阿里云账号的RAM角色。 ![]() 阿里云账号为用户角色,阿里云服务为服务角色。 相关文档STS临时授权OSS操作权限报“Access denied by authorizer's policy”错 使用STS访问OSS资源时常见的错误码及错误原因 RAM角色和STS token常见问题 适用于对象存储OSS 访问控制 |
CopyRight 2018-2019 实验室设备网 版权所有 |